/***************************************************************************
pgselectconnection.cpp
-------------------
    begin                : 02.2011
    copyright            : by kuzkok
    email                : kuzkok@gmail.com

***************************************************************************
*                                                                         *
*   This program is free software; you can redistribute it and/or modify  *
*   it under the terms of the GNU General Public License as published by  *
*   the Free Software Foundation; either version 2 of the License, or     *
*   (at your option) any later version.                                   *
*   
*   Данная программа является свободным программным обеспечением;         *
*   Вы можете распространять ее и/или модифицировать в соответствии с     *
*   GNU General Public License опубликованной Фондом свободного           *
*   программного обеспечения; используемая версия лицензии - 2 или        *
*   (по вашему выбору) любая более поздняя                                *
***************************************************************************/

#include "pgselectconnection.h"
#include "ui_pgselectconnection.h"

#include <QSettings>
#include <QMessageBox>
#include "pgeditconnection.h"

pgselectconnection::pgselectconnection(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::pgselectconnection)
{
    ui->setupUi(this);
    populateConnectionList();
    connect(ui->pbNew, SIGNAL(clicked()), this, SLOT(newConnection()));
    connect(ui->pbEdit, SIGNAL(clicked()), this, SLOT(editConnection()));
    connect(ui->pbSelect, SIGNAL(clicked()), this, SLOT(selectConnection()));
    connect(ui->pbDelete, SIGNAL(clicked()), this, SLOT(deleteConnection()));
}

pgselectconnection::~pgselectconnection()
{
    delete ui;
}

void pgselectconnection::populateConnectionList()
{
    QSettings settings;
    ui->comboBox->clear();
    settings.beginGroup("PostgreSQL/connections");
    foreach(QString str, settings.childGroups())
    {
        ui->comboBox->addItem(str);
    }
    settings.endGroup();
    ui->pbEdit->setEnabled(ui->comboBox->count()>0);
    ui->pbDelete->setEnabled(ui->comboBox->count()>0);
}

void pgselectconnection::newConnection()
{
    pgeditconnection *ec = new pgeditconnection(this);
    ec->show();
    populateConnectionList();
}

void pgselectconnection::editConnection()
{
    pgeditconnection *ec = new pgeditconnection(this, ui->comboBox->currentText());
    ec->show();
    populateConnectionList();
}

void pgselectconnection::deleteConnection()
{
    QSettings settings;
    QString key = "/Postgresql/connections/" + ui->comboBox->currentText();
    QString msg = tr( "Удалить соединение %1 и все его настройки?" )
                  .arg(  ui->comboBox->currentText() );
    if ( QMessageBox::Ok != QMessageBox::information( this, tr( "Удалить" ), msg, QMessageBox::Ok | QMessageBox::Cancel ) )
      return;

    settings.remove( key + "/host" );
    settings.remove( key + "/database" );
    settings.remove( key + "/username" );
    settings.remove( key + "/password" );
    settings.remove( key + "/port" );
    settings.remove( key + "/sslmode" );
    settings.remove( key + "/publicOnly" );
    settings.remove( key + "/geometryColumnsOnly" );
    settings.remove( key + "/estimatedMetadata" );
    settings.remove( key + "/saveUsername" );
    settings.remove( key + "/savePassword" );
    settings.remove( key + "/save" );
    settings.remove( key );

    populateConnectionList();
}

void pgselectconnection::selectConnection()
{
//    QgisIface ui->comboBox->currentText();
//    this->accept();
}
